/**
 * Copyright (C), 2020, Y2 T205
 * FileName: MyMQConfig
 * Author: Lenovo
 * Date: 2020-05-29 16:21
 * Description:
 * History:
 * <author> <time> <version> <desc>
 * 作者姓名 修改时间 版本号 描述
 */


package com.atguigu.gulimall.order.config;


import com.atguigu.gulimall.order.entity.OrderEntity;
import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * 〈一句话功能简述〉<br>
 * 〈〉
 *
 * @author Lenovo
 * @create 2020-05-29
 * @since 1.0.0
 */
//rabbitmq的配置文件
    @Configuration
public class MyMQConfig {




        @Bean
        public Queue orderDelayQueue(){
            Map<String,Object> arguments =new HashMap<>();
            arguments.put("x-dead-letter-exchange","order-event-exchange");
            arguments.put("x-dead-letter-routing-key","order.release.order");
            arguments.put("x-message-ttl",900000);


        Queue queue =new Queue("order.delay.queue",true,false,false,arguments);

        return queue;
        }
        @Bean
        public Queue orderReleaseOrderQueue(){
            Queue queue =new Queue("order.release.order.queue",true,false,false);

            return queue;
        }
    @Bean
        public Exchange orderEventExchange(){
return new TopicExchange("order-event-exchange",true,false);
        }
    @Bean
        public Binding orderCreateOrderBindging(){
return new Binding("order.delay.queue",Binding.DestinationType.QUEUE,"order-event-exchange","order.create.order",null);
        }
    @Bean
        public Binding orderReleaseOrderBingding(){
        return new Binding("order.release.order.queue",Binding.DestinationType.QUEUE,"order-event-exchange","order.release.order",null);
        }
/*订单释放直接和库存释放直接绑定*/
    @Bean
    public Binding orderReleaseOtherBingding(){
        return new Binding("stock.release.stock.queue",Binding.DestinationType.QUEUE,"order-event-exchange","order.release.other.#",null);
    }
//    秒杀使用的队列
    @Bean

    public Queue orderSeckillOrderQueue(){

        return new Queue("order.seckill.order.queue",true,false,false);
    }

    @Bean
    public Binding orderSeckillOrderQueueBinding(){
        return new Binding("order.seckill.order.queue",Binding.DestinationType.QUEUE,"order-event-exchange","order.seckill.order",null);
    }


}
